<?php
//引入所需文件
require_once('class/BCGFontFile.php');
require_once('class/BCGColor.php');
require_once('class/BCGDrawing.php');
require_once('class/BCGcode39.barcode.php');
require_once('./qrcode/phpqrcode.php');

class getqrbarImg
{
    public $students;
    public function __construct($stdinfo)
    {
        $this->students = $stdinfo;
    }
    public function makeImg() {
        foreach ($this->students as $std) {
            foreach ($std as $name=>$number){
                //條形碼

                //黑白色
                $color_black = new BCGColor(0, 0, 0);
                $color_white = new BCGColor(255, 255, 255);
                //字体
                $font = new BCGFontFile('./font/Arial.ttf', 18);
                $drawException = null;

                //生成BCG39型的条形码
                try {
                    $code = new BCGcode39();
                    $code->setScale(2); // Resolution
                    $code->setThickness(30); // Thickness
                    $code->setForegroundColor($color_black); // Color of bars
                    $code->setBackgroundColor($color_white); // Color of spaces
                    $code->setFont($font); // Font (or 0)
                    $code->parse($number); // Text
                } catch(Exception $exception) {
                    $drawException = $exception;
                }
                //创建文件夹，转换编码GBK识别中文
                mkdir(iconv("UTF-8", "GBK", './images/'.$name),0777,true);
                /*
                 * 第一个参数为路径。认为false，不保存为文件,输出到屏幕
                 * 第二个参数为底色
                 * */
                $drawing = new BCGDrawing(iconv("UTF-8", "GBK", './images/'.$name.'/bar.png'), $color_white);
                if($drawException) {
                    $drawing->drawException($drawException);
                } else {
                    $drawing->setBarcode($code);
                    $drawing->draw();
                }
                //保存图片为PNG类型
                $drawing->finish(BCGDrawing::IMG_FORMAT_PNG);

                //二維碼
                /*
                 * 第一个参数为路径，没有就直接输出到浏览器
                 * 第二个参数为容错率，默认为L，后面是M,Q,H,越高表示二维码能被覆盖区域的百分比
                 * 第三个参数表示图片大小，默认为3
                 * 第四个参数表示margin值，即二维码周围的白框大小
                 * 最后一个表示是否保存到文件，默认为false*/
                QRcode::png($number,iconv("UTF-8", "GBK", './images/'.$name.'/qrcode.png'),QR_ECLEVEL_L,4,2,true);


            }

        }
    }

}

//测试数组
$arr = array(
    ['幾十塊' => '512019260'],
    ['就沒事' => '512019262']
);

$action = new getqrbarImg($arr);
$action->makeImg();
echo "文件生成到当前文件夹images下。";